/* eslint-disable no-restricted-syntax */
/* eslint-disable radix */
import i18n from '@/lang'
import moment from 'moment'
export default {
  formatSelectData (selectData) {
    const newSelectData = []
    if (Array.isArray(selectData)) {
      selectData.forEach(item => {
        for (const i in item) {
          newSelectData.push({
            key: i,
            value: item[i]
          })
        }
      })
    }
    return newSelectData
  },
  commonValidator (rule, value, callback, num) {
    const errors = []
    if (rule.required) {
      console.log('111')
      !value && errors.push(new Error(i18n.t('pleaseInput')))
    }
    const pattern = /^(?=.*?\S)[\u4e00-\u9fa5A-Za-z0-9-_./ ]*$/
    if (value && !pattern.test(value)) {
      console.log('2222')
      errors.push(new Error(i18n.t('inputTip')))
    }
    if (value && value.length > num) {
      console.log('3333')
      errors.push(new Error(i18n.t('textMaxLenTip').replace('__NUM__', num)))
    }
    // 计算值的实际占数据库字节
    // if (value) {
    //   let len = 0
    //   for (let i = 0; i < value.length; i++) {
    //     let length = value.charCodeAt(i);
    //     if (length >= 0 && length <= 128) {
    //       len += 1;
    //     } else {
    //       len += 2;
    //     }
    //   }
    //   if (len > num) {
    //     errors.push(new Error(`${num}个以内字符，一个汉字为两个字符`))
    //   }
    // }
    callback(errors[0])
  },
  // 部分提示框渲染到body
  getPopupContainer () {
    return document.body
  },
  // 模糊搜索
  filterOption (input, option) {
    let resultText = ''
    if (option.componentOptions.children[0].text) {
      resultText = option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
    } else {
      // 下拉框内容多了一层标签
      resultText = option.componentOptions.children[0].children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
    }
    return resultText
  },
  //   文件下载前端处理
  fileDownLoad (url, fileName = false) {
    const a = document.createElement('a')
    a.style.display = 'none'
    a.href = url
    a.id = 'downloadElement'
    fileName && a.setAttribute('download', fileName)
    document.body.append(a) // 修复firefox中无法触发click
    a.click()
    document.getElementById('downloadElement').remove()
  },
  //   深拷贝对象
  deepCopy (obj) {
    const vm = this
    const result = Array.isArray(obj) ? [] : {}
    for (const key in obj) {
      // eslint-disable-next-line no-prototype-builtins
      if (obj.hasOwnProperty(key)) {
        if (typeof obj[key] === 'object' && obj[key] !== null) {
          result[key] = vm.deepCopy(obj[key]) // 递归复制
        } else {
          result[key] = obj[key]
        }
      }
    }
    return result
  },
  // 活跃度计算(3,7,15天) x=3显示3  3<x<=7显示7  7<x<=15 显示15    大于15的则不显示
  getActivityDay (time, msg) {
    const now = (new Date()).getTime()
    const dis = now - time
    const oneDayTime = 1000 * 3600 * 24
    let day = 0; let cont = ''
    if (dis <= oneDayTime * 3) {
      cont = msg.replace('__CONTENT__', 3)
      day = 3
    } else if (dis <= oneDayTime * 7) {
      cont = msg.replace('__CONTENT__', 7)
      day = 7
    } else if (dis <= oneDayTime * 15) {
      cont = msg.replace('__CONTENT__', 15)
      day = 15
    }
    return { day, cont }
  },
  // 最近成功升级计算(3,7,15天) x=3显示3  3<x<=7显示7  7<x<=15 显示15    大于15的则不显示
  getLastUpgradeOkDay (time, msg) {
    const now = (new Date()).getTime()
    const dis = now - time
    const oneDayTime = 1000 * 3600 * 24
    let day = 0; let cont = ''
    if (dis <= oneDayTime * 3) {
      cont = msg.replace('__CONTENT__', 3)
      day = 3
    } else if (dis <= oneDayTime * 7) {
      cont = msg.replace('__CONTENT__', 7)
      day = 7
    } else if (dis <= oneDayTime * 15) {
      cont = msg.replace('__CONTENT__', 15)
      day = 15
    }
    return { day, cont }
  },
  // 格式化为日期时间字符串
  getDateTimeStr (date, format = 'YYYY-MM-DD HH:mm:ss') {
    if (!date) {
      return '-'
    }
    return moment(date).format(format)
  },
  // 格式化为日期小时分钟字符串
  getDateMinuteStr (date, format = 'YYYY-MM-DD HH:mm') {
    if (!date) {
      return '-'
    }
    return moment(date).format(format)
  },
  // 格式化为日期字符串
  getDateStr (date, format = 'YYYY-MM-DD') {
    if (!date) {
      return '-'
    }
    return moment(date).format(format)
  },
  // 计算两个日期之间相差的时长
  getTwoDateDiff  (startTime, endTime) {
    if (!startTime || !endTime) {
      return '-'
    }
    const diffVal = moment(endTime).diff(moment(startTime), 'minutes')
    const mLang = i18n.t('minute')
    if (diffVal < 60) {
      return diffVal + mLang
    }
    const hours = Math.floor(diffVal / 60)
    const minutes = diffVal % 60
    const hLang = i18n.t('hour')
    if (hours < 24) {
      return hours + hLang + (minutes ? minutes + mLang : '')
    }
    const dLang = i18n.t('day')
    const days = Math.floor(hours / 24)
    return days + dLang + (hours - (days * 24)) + hLang + minutes + mLang
  },
  // 格式化为日期时间字符串(是昨天或今天的则日期部分显示为:'昨天或今天')
  getDateTextMinuteStr (date, format = 'YYYY-MM-DD HH:mm') {
    if (!date) {
      return '-'
    }
    const dateFormat = 'YYYY-MM-DD'
    const timeFormat = 'HH:mm'
    if (moment(date).format(dateFormat) === moment().format('YYYY-MM-DD')) {
      return i18n.t('today') + '&nbsp;' + moment(date).format(timeFormat)
    }
    if (moment(date).format(dateFormat) === moment().subtract(1, 'days').format('YYYY-MM-DD')) {
      return i18n.t('yesterday') + ' ' + moment(date).format(timeFormat)
    }
    return moment(date).format(format)
  },
  // 秒数转化为时分秒
  formatSeconds (value) {
    if (/\D/.test(value)) {
      return ''
    }
    let secondTime = parseInt(value)// 秒
    let minuteTime = 0// 分
    let hourTime = 0// 小时
    if (secondTime >= 60) { // 如果秒数大于或等于60，将秒数转换成整数
      // 获取分钟，除以60取整数，得到整数分钟
      minuteTime = parseInt(secondTime / 60)
      // 获取秒数，秒数取余，得到整数秒数
      secondTime = parseInt(secondTime % 60)
      // 如果分钟大于60，将分钟转换成小时
      if (minuteTime >= 60) {
        // 获取小时，获取分钟除以60，得到整数小时
        hourTime = parseInt(minuteTime / 60)
        // 获取小时后取余的分，获取分钟除以60取余的分
        minuteTime = parseInt(minuteTime % 60)
      }
    }
    let result = ''
    if (secondTime > 0) {
      result = '' + parseInt(secondTime) + i18n.t('second')
    }
    if (minuteTime > 0) {
      result = '' + parseInt(minuteTime) + i18n.t('minute') + result
    }
    if (hourTime > 0) {
      result = '' + parseInt(hourTime) + i18n.t('hour') + result
    }
    console.log('result', result)
    return result
  },
  getEcuAssembleTypeDesc(value){
    let result = ''
    if(!value){
      result = '无'
    }else if(value == 1){
      result = '标配'
    }else if(value == 2){
      result = '选装'
    }

    return result
  },
  getVersionTypeByTestType(testType) {
    return testType === 'uat' ? 'PROD' : 'TEST';
  }

}
